package spzx.knife4j;

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
public class Knife4jConfig {

    /**
     * 对工程下的接口进行分组
     * @return
     */
    @Bean
    public GroupedOpenApi adminApi() {      // 创建了一个api接口的分组
        return GroupedOpenApi.builder()
                .group("后台系统接口")         // 分组名称
                .pathsToMatch("/admin/**")  // 接口请求路径规则，一般都是以/admin开头的
                .build();
    }

    @Bean
    public GroupedOpenApi cartApi() {      // 创建了一个api接口的分组
        return GroupedOpenApi.builder()
                .group("商城端：购物车服务接口接口")         // 分组名称
                .pathsToMatch("/api/cart/**")  // 接口请求路径规则
                .build();
    }

    @Bean
    public GroupedOpenApi orderApi() {      // 创建了一个api接口的分组
        return GroupedOpenApi.builder()
                .group("商城端：订单服务接口")         // 分组名称
                .pathsToMatch("/api/admin/**")  // 接口请求路径规则
                .build();
    }

    @Bean
    public GroupedOpenApi productApi() {      // 创建了一个api接口的分组
        return GroupedOpenApi.builder()
                .group("商城端：商品微服务接口")         // 分组名称
                .pathsToMatch("/api/product/**")  // 接口请求路径规则
                .build();
    }

    /**
     * openApi这个bean示例，就是对Knife4j的配置，可以根据自己的需求进行修改
     */
    @Bean
    public OpenAPI customOpenAPI() {
        return new OpenAPI()
                .info(new Info()
                        .title("尚品甄选API接口文档")   // 标题
                        .version("1.0")
                        .description("尚品甄选API接口文档")
                        .contact(new Contact().name("商品甄选打工人"))); // 设定作者
    }
}
